﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using KProject.Model;
using KProject.DAL;
using KProject.View;
using System.Windows.Forms;

namespace KProject.Controller
{
    class CategoriasController
    {
        private List<Categoria> categorias = new List<Categoria>();
        private List<GrupoJurados> gruposJurados = new List<GrupoJurados>();

        public int CurrentColumnIndex { get; set; }
        public int CurrentRowIndex { get; set; }

        public void Atualizar(DataGridView gridCategorias, int idConcurso, TabControl tabControl)
        {
            gruposJurados = GruposJuradosDAL.List(idConcurso);
            categorias = CategoriasDAL.List(idConcurso);

            if (gruposJurados.Count == 0)
            {
                tabControl.SelectedIndex = 1;
                throw new VerifyingException("Nenhum grupo de jurados cadastrado.");
            }

            gridCategorias.AutoGenerateColumns = false;

            BindingSource bs = new BindingSource();
            gridCategorias.DataSource = bs;
            bs.DataSource = categorias;
        }

        public void Adicionar(DataGridView gridCategorias, DataGridViewComboBoxColumn grupoJuradosCategoria)
        {
            int index = gridCategorias.Rows.Count;
            categorias.Add(new Categoria());

            grupoJuradosCategoria.DataSource = gruposJurados;
            grupoJuradosCategoria.DisplayMember = "Nome";
            grupoJuradosCategoria.ValueMember = "Id";

            gridCategorias.AutoGenerateColumns = false;

            BindingSource bs = new BindingSource();
            gridCategorias.DataSource = bs;
            bs.DataSource = categorias;

            gridCategorias.CurrentCell = gridCategorias.Rows[index].Cells[0];
            gridCategorias.Rows[index].Cells[2].Value = gruposJurados[0].Id;
            gridCategorias.Select();
            gridCategorias.BeginEdit(true);
        }

        public void Verificar(DataGridView gridCategorias, DataGridViewComboBoxColumn grupoJuradosCategoria, int idConcurso)
        {
            if (!gridCategorias.Focused || gridCategorias.SelectedCells.Count == 0 || gridCategorias.SelectedCells[0].RowIndex != CurrentRowIndex)
            {
                string nome = (string)gridCategorias.Rows[CurrentRowIndex].Cells[0].Value;
                int trofeus = (int)gridCategorias.Rows[CurrentRowIndex].Cells[1].Value;
                GrupoJurados grupo = new GrupoJurados()
                {
                    Id = Convert.ToInt32(gridCategorias.Rows[CurrentRowIndex].Cells[2].Value),
                    Nome = gridCategorias.Rows[CurrentRowIndex].Cells[2].FormattedValue.ToString()
                };
                

                if (nome == null || nome.Trim().Length < 1)
                {
                    if (categorias[CurrentRowIndex].Id != 0)
                    {
                        // buscar nome
                    }
                    else
                    {
                        categorias.RemoveAt(CurrentRowIndex);
                    }
                }
                else
                {
                    categorias[CurrentRowIndex].Nome = nome;
                    categorias[CurrentRowIndex].Trofeus = trofeus;
                    categorias[CurrentRowIndex].GrupoJurados = grupo;
                    // salvar
                }

                BindingSource bs = new BindingSource();
                bs.DataSource = categorias;
                gridCategorias.DataSource = bs;
            }
        }
    }
}
